#define MaxSize 100
class SequenList
{
public:
    int ins(int i, int x);
    int del(int i);
    int sel(int x);
    int upd(int i, int x);
    int push(int x);
    void read();

private:
    int len = 0;
    int data[MaxSize];
};
/**
 * 位置i与右侧数据右移，x插入位置i
*/
int SequenList::ins(int i, int x)
{
    /**
     * ------------- 条件判断 ------------------
     * 1.插入位置不能大于当前长度
     * 2.插入后长度不能超过最大长度
    */
    if (i > len)
    {
        std::cout << "超出长度范围" << std::endl;
        return 0;
    }
    if (len > MaxSize)
    {
        std::cout << "超出长度范围" << std::endl;
        return 0;
    }
    /**
     * ----------- 插入操作 -------------
     * 1.从插入位置开始数据右移
     * 2.插入位置赋值
     * 3.当前长度+1
    */
    // 1.
    for (int j = len; j > i; j--)
    {
        data[j] = data[j - 1];
    }
    // 2.
    data[i] = x;
    // 3.
    len = len + 1;
    return 0;
}
/**
 * 遍历顺序表
*/
void SequenList::read()
{
    for (int i = 0; i < len; i++)
    {
        std::cout << data[i] << ' ';
    }
    std::cout << '\n';
}
/**
 * 顺序表末尾添加x
*/
int SequenList::push(int x)
{
    /**
     * ------------ 条件判断 --------------
     * 1.添加后len是否超出maxSize
    */
    if (len > MaxSize)
    {
        std::cout << "超出长度" << std::endl;
        return 0;
    }
    /**
     * ------------- 操作 --------------
     * 1.末尾添加
     * 2.长度+1
    */
    data[len] = x;
    len = len + 1;
    return 0;
}
/**
 * 删除位置i的元素，i右侧左移
*/
int SequenList::del(int i)
{
    /**
     * ------------- 条件判断 ---------------
     * 1.i<len
     * 2.i<0
    */
    if (i > len || i < 0)
    {
        std::cout << "无该位置" << std::endl;
        return 0;
    }
    /**
    * ------------- 处理 -------------------
    * 1.从位置i开始逐个左移
    * 2.len-1
   */
    for (int j = i; j < len; j++)
    {
        data[j] = data[j + 1];
    }
    len--;
    return 0;
}
/**
 * 查找x第一个位置
*/
int SequenList::sel(int x)
{
    for (int i = 0; i < len + 1; i++)
    {
        if (data[i] == x)
        {
            return i;
        }
    }
}
/**
 * 位置i的元素替换为x
*/
int SequenList::upd(int i, int x)
{
    /**
     * ---------- 条件判断 ------------
     * 1.位置i不能大于len
    */
    if (i > len)
    {
        std::cout << "无该位置" << std::endl;
        return 0;
    }
    /**
     * -------- 处理 --------------
     * 位置i替换为x
    */
    data[i] = x;
    return 0;
}